package org.xx.armory.swing.builders;

import org.xx.armory.objectparser.LineInfo;
import org.xx.armory.objectparser.ParsedObject;

import static org.apache.commons.lang3.StringUtils.trimToEmpty;

public abstract class AbstractComponentModel
        extends ParsedObject
        implements ComponentModel {
    private final String name;
    private final boolean visible;

    /**
     * 构造基础的组件模型。
     *
     * @param lineInfo
     *         定义组件的位置信息。
     * @param name
     *         组件的名字，自动去掉首尾空格。
     * @param visible
     *         组件是否可见。
     */
    protected AbstractComponentModel(
            LineInfo lineInfo,
            String name,
            boolean visible
    ) {
        super(lineInfo);

        this.name = trimToEmpty(name);
        this.visible = visible;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public String getName() {
        return this.name;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean isVisible() {
        return this.visible;
    }
}
